时间序列分析背景

一般进行数据分析通过步骤包括:

步骤1:定义问题

通常这是预测中最困难的步骤。要准确定义这个问题,需要了解怎样运用预测方法,谁需要这个预测,以及预测效果如何满足需要这个预测的机构。预测人员需要花费一定时间与所有参与收集数据、维护数据库和使用这个预测对未来进行规划的人沟通。

步骤2:收集信息

一般至少需要两种信息收集方式:(a) 统计数据,(b) 收集数据和进行预测方面专家的积累经验。通常情况下,要获得足够多的历史数据以构建良好的统计模型是很困难的。在这种情况下,可以判断预测方法。有时候,陈旧数据会因相应数据发生结构变化而失效,因而我们一般只选择使用较新的数据。然而,一个好的统计模型可以处理系统中的结构变化,因此不要轻易丢弃好的数据。

步骤3:初步(探索性)分析

总是以图形开头。有一致的模式吗?有明显的长期趋势吗?季节性重要吗?是否有证据表明商业周期存在?数据中是否包含需要专业知识解释的异常值?用于分析的变量之间的相关性有多强?目前已经开发了各种工具来帮助进行这种分析。

步骤4:选择及拟合模型

最佳模型的选择取决于历史数据的可用性、预测变量与各解释变量之间的相关性,以及预测的使用方式。比较两个或三个潜在的模型是很常见的。每个模型本身都基于人为提出的一组假设(显式和隐式)而建立,通常包含一个或多个参数,这些参数必须使用已知的历史数据进行估计。我们将讨论回归模型、指数平滑方法、Box-Jenkins ARIMA模型、动态回归模型、分层预测,以及其他各种方法,包括计数时间序列、神经网络和向量自回归。

步骤5:使用及评估预测模型

一旦模型及其参数确定后,该模型就可以用来进行预测。模型的预测效果只有用于预测的数据得到之后才能得到正确的评价。目前已经开发了许多方法来评估预测的准确性。在使用和进行预测时会存在很多组织结构问题。

1. 时序模型

而在应用时间序列分析的模型包括,统计模型以及序列模型(例如, RNN)。

1.1 统计模型

在常用的时序模型中,常用的类型包括直接用预测变量 、前期结果直接预测以及前期结果加预测变量预测——三种类型在函数 $\ref{1.1}$ 有表达。其中数学表达式为:
$$
\begin{equation}
Y_{t+1} = \label{1.1}
\begin{cases}
f(X_{(t+1,1)}, X_{(t+1,2)},…, X_{(t+1,n)}, \text{bias}) \
f(Y_t, Y_{t-1},…, \text{bias}) \
f(Y_t, X_{(t+1,1)}, X_{(t+1,2)},…, X_{(t+1,n)}, \text{bias})
\end{cases}
\end{equation}
$$
在上式 $\ref{1.1}$ 中第二个等式表示影响系统的因素没有外部因素,第三个等式是前两个的混合模型,应用中可以被称作动态回归模型、面板数据模型以及纵向模型。

应用中基于规则的模型:

  • 使用已知观测数据,直接用于预测未知数据: $\hat{y}_{t+1}=y_t$。特点是使用的信息少

  • 移动平均模型,利用过去 $k$ 时间段的数据预测未知数据: $\hat{y}{t+1}=\frac{1}{k}\displaystyle\sum{i=t-k}^t y_i$

  • 单变量统计模型,利用时序数据自身 ${y_t, y_{t-1},…,y_2,y_1}$ 预测未知的数据 $y_{t+1}$,同时会引入外部数据信息进行相关分析:$y_{t+1}\leftarrow {y_t,y_{t-1},…,y_2,y_1, X_t,X_{t-1},…,X_2,X_1}$ ,其中 $X$ 为外部数据。该类型的模型多个类别:

    • ARMA 和 ARIMA 两个模型都分别包括自身数据项和误差项构成模型
  • 多元时间序列模型,通过滞后的 $p$ 数据以及外部数据,对 $K$ 个序列进行分析。这样模型实际是对 $K$ 个序列进行了分别建模。模型效果如下:

    上述表示的是模型的结果,对于理解 $K$ 个序列数据可能不方便,参考下图 $K$ 个序列可以看作是下图中 $K$ 个线[^1]:

    在实际应用中需要特别注意数据序列之间存在相关性。

    • VAR 向量自回归模型,在使用时需要注意使用条件:1)$K$ 个序列的模型分析,因为它能创建序列相关模型;2)仅能对迟滞化序列(Stationary Series)建模;3)对于非迟滞化序列需要通过简单差(Differencing)分转换为迟滞化序列

      在使用 Python 的进行计算 VAR 过程中,需要指定 order 参数用于指定 lag

      1
      2
      3
      model = sm.tsa.VARMAX(y, order=(3, 0), tread="c")
      model_result = model.fit(maxiter=1000, disp=False)
      model_result.summary()

      在模型训练完之后,可以对模型进行绘图诊断,直接使用 model_result.plot_diagnostics()。对模型进行筛选主要是针对 oder 参数

  • 贝叶斯结构化时间序列模型,解决一个系列的模型而非单一模型,以及在解决数据较少需要冷启动时可以应用

1.2 RNN 模型

image-20200509001027118

2. 其他说明

  • 传统统计学和机器学习模型在时序分析中的缺点是没有完全充分利用数据
  • 时序建模的一般情况下期望数据是 Stationarity,即具有相对稳定的周期性变化。相对稳定的数据,具有比较好的统计学属性,可以方便进行建模预测
  • 关于 Dickey-Fuller 测试,零假设是数据不是 Stationary,这点和常用的零假设具有一些差异

Term

  • Horizon: 指需要预测的数据范围, $\hat{y}_{t+h}$,其中 $h$ 表示预测的范围
作者

ZenRay

发布于

2021-04-11

更新于

2021-04-11

许可协议

CC BY-NC-SA 4.0